//package com.tjetc._6inner_class;
//
//public class _4MemberInnerClass {
//    public static void main(String[] args) {
//        /*
//            成员内部类是定义在外部类的成员位置，并且没有static修饰。
//            1. 可以直接访问外部类的所有成员，包含私有的
//            2. 可以添加任意访问修饰符(public、protected、默认、private),因为它的地位就是一个成员。
//            3. 作用域和外部类的其他成员一样，为整个类体。
//            4. 成员内部类---访问---->外部类成员(比如： 属性)（访问方式：直接访问）
//            5. 外部类---访问----->成员内部类（访向方式：创建对象，再访问）
//            6. 外部其他类---访问--->成员内部类
//            7. 如果外部类和内部类的成员重名时，内部类访问的话，默认遵循就近原则，如果想访向外部类的成员，则可以使用(外部类名.this.成员)去访问
//
//         */
//
//        _4MemberInnerClass memberInnerClass = new _4MemberInnerClass();
//        // 第一种获取内部类对象的方式
//        A a = memberInnerClass.getInstance();
//        System.out.println(a.a);
//        // 第二种获取内部类对象的方式
//        _4MemberInnerClass.A a1 = memberInnerClass.new A();
//        System.out.println(a1.a);
//
//
//    }
//
//    private int b = 1;
//
//    // 定义一个获取内部类对象的方法
//    public A getInstance() {
//        return new A();
//    }
//    // 私有化后也不能通过提供获取方法给外部其他类进行使用，不影响外部类
////    private class A {
//    public class A {
//        // 类的五大成员
//        int a = 1;
//        void f(){};
//        A(){}
//        class B{}
//        {}
//
//        //
//        void f1() {
//            System.out.println(b);
//        }
//    }
//}
//
//class A {
//    public static void main(String[] args) {
//        _4MemberInnerClass memberInnerClass = new _4MemberInnerClass();
//        _4MemberInnerClass.A a = memberInnerClass.new A();
//
//    }
//}
